﻿/*
 * Created by SharpDevelop.
 * User: CeCi
 * Date: 29/03/2014
 * Time: 03:56 p.m.
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Data;

namespace Gestión_UTN.blimpl
{
	/// <summary>
	/// Description of ciudadblimpl.
	/// </summary>
	public class ciudadblimpl:Gestión_UTN.bl.ciudadbl
	{
		private static Gestión_UTN.da.ciudadda createCiudad = Gestión_UTN.factories.dafactory.createCiudad();
		private static Gestión_UTN.da.provinciada createProvincia = Gestión_UTN.factories.dafactory.createProvincia();
		
		public ciudadblimpl()
		{
		}
		
		public bool SaveCiudad(Gestión_UTN.bo.Ciudadbo ciudad)
		{
			bool ingresada = false;
			
			try 
			{
				if (null != ciudad) 
				{
					Gestión_UTN.Entities.Provincia prov = createProvincia.FindProvinciaByNombre(ciudad.Provincia);
					
					if (null != prov ) 
					{
						ingresada = createCiudad.SaveCiudad(ciudad.CodPostal,ciudad.Nombre,prov.Prov_id);	
					}
					
				}
					
			} 
			catch (Exception)
			{
				
				ingresada = false;
			}
			
			return ingresada;
		}
		
		public bool DeleteCiudad(int codPostal)
		{
			bool eliminada = false;
			
			try 
			{
				if (0 != codPostal) 
				{
					eliminada = createCiudad.DeleteCiudad(codPostal);
				}
				
			} 
			catch (Exception) 
			{
				
				eliminada = false;
			}
			
			return eliminada;
		}
		
		public bool ModifyCiudad(int codPostal_anterior, Gestión_UTN.bo.Ciudadbo ciudad)
		{
			bool modificada = false;
			
			try 
			{
				if (0 != codPostal_anterior && null != ciudad) 
				{
					Gestión_UTN.Entities.Provincia prov = createProvincia.FindProvinciaByNombre(ciudad.Nombre);
					
					if (null != prov) 
					{
						modificada = createCiudad.ModifyCiudad(codPostal_anterior,ciudad.CodPostal,
						                                       ciudad.Nombre,prov.Prov_id);
					}
					
				}
				
			} 
			catch (Exception) 
			{
				
				modificada = false;
			}
			
			return modificada;
		}
		
		public System.Data.DataTable FindAllCiudades()
		{
			DataTable tablaCiudades = null;
			
			try 
			{
				tablaCiudades = createCiudad.FindAllCiudades();
			} 
			catch (Exception)
			{
				tablaCiudades = null;
			}
			
			return tablaCiudades;
		}
		
		public Gestión_UTN.bo.Ciudadbo FindCiudadByCodPostal(int codPostal)
		{
			Gestión_UTN.bo.Ciudadbo ciudad = null;
			
			try 
			{
				if (0 != codPostal) 
				{
					Gestión_UTN.Entities.Ciudad ciu = createCiudad.FindCiudadByCodPostal(codPostal);
					
					if (null != ciu)
					{
						Gestión_UTN.Entities.Provincia prov =createProvincia.FindProvinciaById(ciu.Prov_id);
						
						if (null != prov) 
						{
							ciudad = new Gestión_UTN.bo.Ciudadbo(ciu.CodPostal,ciu.Nombre,prov.Nombre);
						}
					}
				}	
			}
			catch (Exception) {
				
				ciudad = null;
			}
			
			return ciudad;
		}
		
		public Gestión_UTN.bo.Ciudadbo FindCiudadByNombre(string nombre)
		{
			Gestión_UTN.bo.Ciudadbo ciudad = null;
			
			try 
			{
				if (!nombre.Equals(""))
				{
					Gestión_UTN.Entities.Ciudad ciu = createCiudad.FindCiudadByNombre(nombre);
					
					if (null != ciu)
					{
						Gestión_UTN.Entities.Provincia prov =createProvincia.FindProvinciaById(ciu.Prov_id);
						
						if (null != prov) 
						{
							ciudad = new Gestión_UTN.bo.Ciudadbo(ciu.CodPostal,ciu.Nombre,prov.Nombre);
						}
					}
				}	
			}
			catch (Exception) {
				
				ciudad = null;
			}
			
			return ciudad;
		}
	}
}
